package jing.exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Repository;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

//只要实现了HandlerExceptionResolver接口springmvc就认为他是全局异常处理器
//因为一个程序只有一个全局异常处理器
public class TestExceptionResolver implements HandlerExceptionResolver {

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
			Exception ex) {
		// 参数中的 Object handler就是处理器适配器执行的handler里面只有一个method方法
		TestException testException;
		// 判断系统抛出的是不是自定义异常类型
		if (ex instanceof TestException) {
			// 如果是就取出异常信息
			testException = (TestException) ex;
		} else {
			// 如果不是，那就是运行时的异常，那就自己来设置异常信息
			testException = new TestException("未知异常");
		}
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("message", testException.getMessage());
		modelAndView.setViewName("errorMessage");
		return modelAndView;
	}

}
